/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;

import java.io.Serializable;
import java.util.List;
import java.util.ListIterator;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
  
import logica.*;
import org.primefaces.event.map.OverlaySelectEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;

/**
 *
 * @author Jaime
 */
@ManagedBean
@ViewScoped
public class MapaBean implements Serializable{

    /**
     * Creates a new instance of MapaBean
     */
    private MapModel model=new DefaultMapModel();
    private List<Restaurante> ListaRestaurante;   
    public Restaurante res;
    private Marker marcador;
    
      
    @PostConstruct
    public void init(){
        InicListaRestaurante();
        InicMarcadores();
        //MacadorInicial1();
        MacadorInicial(1);
          
    }
    
    private void InicListaRestaurante(){
        ManejadorRestaurante mr = new ManejadorRestaurante();
        this.ListaRestaurante=mr.getRestaurantes();
    }
    
    private void InicMarcadores(){
        ListIterator<Restaurante> li=this.ListaRestaurante.listIterator();
        while(li.hasNext()){
            Restaurante res=li.next();
            model.addOverlay(new Marker(res.getCoordena(),res.getNombre(),res));          
        }
        
        //for (Restaurante res : this.ListaRestaurante) {            
           // model.addOverlay(new Marker(res.getCoordena(),res.getNombre()));
        //}
            
    }
        //escojer el restaurante inicial a mostrar
        // el de mayor puntuacion     
        // o el primer restaurante
    private void MacadorInicial1(){         
        List<Marker> marcadores=this.model.getMarkers();
        ListIterator<Marker> li=marcadores.listIterator();
        Marker mark;
        Restaurante mayor=null;
        Restaurante actual=null;
        boolean bandera=true;
        
        while(li.hasNext() && bandera){
            mark=li.next();
            actual=(Restaurante)mark.getData();
            if (mayor==null){
                mayor=(Restaurante)mark.getData();
            }else{
                if(actual.getPuntuacion()>mayor.getPuntuacion())
                    mayor=(Restaurante)mark.getData();
            }             
        }
        
        //this.marcador=mark;
        this.res=mayor;
        
    }
    
    //escojer el restaurante inicial a mostrar
    private void MacadorInicial(int codigobuscar){         
        List<Marker> marcadores=this.model.getMarkers();
        ListIterator<Marker> li=marcadores.listIterator();
        boolean bandera=true;
        while(li.hasNext() && bandera){
            Marker mark=li.next();
            Restaurante res=(Restaurante)mark.getData();                        
            if(res.getCodigo()==codigobuscar){
                this.marcador=mark;
                this.res=res;
                bandera=false;
            }                
        }
        
    }
    
    public MapModel getModel(){
        return this.model;
    }
    
    public void onMarkerSelect(OverlaySelectEvent event){
        this.marcador=(Marker)event.getOverlay();
        this.res=(Restaurante)this.marcador.getData();
        
    }
           
    public Restaurante getRes() {
        return res;
    }

    public void setRes(Restaurante res) {
        this.res = res;
    }

    public Marker getMarcador() {
        return marcador;
    }

      
    
}